'************************************************ 'AD9851 SSG Ver0.1.3 '2006.11.03 'JA4LAO_Tuneo.Ito 'AT90S8535-10PC(10MHz) '************************************************ Config Portd.0 = Output Config Portd.1 = Output Config Portd.2 = Output Config Portd.3 = Output Config Portd.5 = Input Config Portd.6 = Input Config Portc = Input Config Kbd = Portc Config Debounce = 3 Dim I As Byte Dim J As Byte Dim Freqdata As String * 32 Dim Isoudata As String * 8 Dim B As String * 1 Dim Freq As Long Dim Isou As Byte Dim Kihon As Long Dim Idou As Long Dim Kankaku As Long Dim Frequd As Long Dim Frequd2 As Long Dim Frequd3 As Long Dim Fpara2 As Long Dim Fpara3 As Long Dim Q As Byte Dim C As Long Dim D As Long Dim E As Byte Dim K As Byte Dim L As Long Dim M As Byte Dim N As Byte Dim P As Byte Dim Kazu(10) As Long Dim Moto(10) As Long Dim Bango As Long N = 1 : K = "" Kihon = 10000000 Kankaku = 1000000 Fpara3 = 191998350 '32MHz*6 Idou = 0 Isou = 128 Isoudata = Bin(isou) '10000000 Gosub Settei Gosub Datasettei Cls : Locate 1 , 1 : Lcd Frequd2 'Gosub Hosei Gosub Ddsout Start: Do Debounce Pind.5 , 0 , Updown , Sub K = Getkbd() If K =< 15 Then Gosub Hantei If M = 1 Then Gosub Bangosettei Else End If End If Loop Goto Start: End Updown: If Pind.6 = 0 Then Incr Idou Else Decr Idou End If Gosub Datasettei Locate 1 , 1 : Lcd " " Locate 1 , 1 : Lcd Frequd2 Gosub Ddsout Return Settei: Waitus 10 : Set Portd.3 : Waitus 30 : Reset Portd.3 'Reset Waitus 10 : Set Portd.1 : Waitus 30 : Reset Portd.1 'P=>S Gosub Fqud For I = 1 To 40 Waitus 10 : Reset Portd.0 : Waitus 10 : Set Portd.1 : Waitus 10 : Reset Portd.1 Next I Gosub Fqud Return Ddsout: Freqdata = Bin(freq) J = 32 For I = 1 To 32 B = Mid(freqdata , J , 1) Gosub Sentaku Decr J Next I For I = 1 To 8 B = Mid(isoudata , I , 1) Gosub Sentaku Next I Gosub Fqud Return Fqud: Waitus 10 : Set Portd.2 : Waitus 10 : Reset Portd.2 : Waitus 10 Return Sentaku: Waitus 10 Select Case B Case "1" Set Portd.0 Waitus 10 Case Else Reset Portd.0 Waitus 10 End Select Set Portd.1 Waitus 10 Reset Portd.1 Return Datasettei: Frequd = Kankaku * Idou Frequd2 = Kihon + Frequd Select Case Frequd2 Case Is < 1000 Frequd2 = 1000000 Kihon = Frequd2 : Idou = 0 Case Is > 60000000 Frequd2 = 60000000 Kihon = Frequd2 : Idou = 0 Case Else End Select L = 0 Fpara2 = Frequd2 For I = 0 To 31 L = L * 2 Fpara2 = Fpara2 * 2 If Fpara2 >= Fpara3 Then Fpara2 = Fpara2 - Fpara3 L = L + 1 End If Next I Freq = L Return Hantei: Waitms 10 P = Getkbd() If P = K Then M = 0 Else M = 1 Waitms 30 End If Return Bangosettei: Select Case K Case 0 To 9 Moto(n) = K Gosub Hyouji N = N + 1 M = 0 : K = 16 Case 10 Kihon = Frequd2 : Idou = 0 Kankaku = 10000000 Case 11 Kihon = Frequd2 : Idou = 0 Kankaku = 1000000 Case 12 Kihon = Frequd2 : Idou = 0 Kankaku = 100000 Case 13 Kihon = Frequd2 : Idou = 0 Kankaku = 10000 Case 14 Kihon = Frequd2 : Idou = 0 Kankaku = 1000 Case 15 Gosub Kettei Gosub Datasettei Locate 1 , 1 : Lcd " " Locate 1 , 1 : Lcd Frequd2 Locate 2 , 1 : Lcd " " Gosub Ddsout Case Else End Select Return Hyouji: Q = N : E = N -1 : D = 0 For I = 1 To Q If E = 0 Then C = 1 Else C = 10 ^ E End If Kazu(i) = Moto(i) * C E = E - 1 Next I For I = 1 To Q D = D + Kazu(i) Next I Locate 2 , 1 : Lcd " " Locate 2 , 1 : Lcd D Return Kettei: Freq = D Kihon = Freq D = 0 For I = 1 To N Moto(i) = 0 Kazu(i) = 0 Next I N = 1 : K = 16 : Idou = 0 Return